<!doctype html>
<html class="no-js" lang="">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>helix-front documentation</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <link rel="icon" type="image/x-icon" href="../images/favicon.ico">
	   <link rel="stylesheet" href="../styles/style.css">
        <link rel="stylesheet" href="../styles/dark.css">
    </head>
    <body>

        <div class="navbar navbar-default navbar-fixed-top visible-xs">
            <a href="../" class="navbar-brand">helix-front documentation</a>
            <button type="button" class="btn btn-default btn-menu ion-ios-menu" id="btn-menu"></button>
        </div>

        <div class="xs-menu menu" id="mobile-menu">
                <div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>            <compodoc-menu></compodoc-menu>
        </div>

        <div class="container-fluid main">
           <div class="row main">
               <div class="hidden-xs menu">
                   <compodoc-menu mode="normal"></compodoc-menu>
               </div>
               <!-- START CONTENT -->
               <div class="content component">
                   <div class="content-data">




<ol class="breadcrumb">
  <li>Components</li>
  <li
  >
  NodeViewerComponent</li>
</ol>

<ul class="nav nav-tabs" role="tablist">
        <li class="active">
            <a href="#info" role="tab" id="info-tab" data-toggle="tab" data-link="info">Info</a>
        </li>
        <li >
            <a href="#source" role="tab" id="source-tab" data-toggle="tab" data-link="source">Source</a>
        </li>
        <li >
            <a href="#templateData" role="tab" id="templateData-tab" data-toggle="tab" data-link="template">Template</a>
        </li>
        <li >
            <a href="#styleData" role="tab" id="styleData-tab" data-toggle="tab" data-link="style">Styles</a>
        </li>
        <li >
            <a href="#tree" role="tab" id="tree-tab" data-toggle="tab" data-link="dom-tree">DOM Tree</a>
        </li>
</ul>

<div class="tab-content">
    <div class="tab-pane fade active in" id="c-info"><p class="comment">
    <h3>File</h3>
</p>
<p class="comment">
    <code>src/app/shared/node-viewer/node-viewer.component.ts</code>
</p>




    <p class="comment">
        <h3>Implements</h3>
    </p>
    <p class="comment">
                    <code><a href="https://angular.io/api/core/OnInit" target="_blank" >OnInit</a></code>
    </p>


<section>
    <h3>Metadata</h3>
    <table class="table table-sm table-hover metadata">
        <tbody>


            <tr>
                <td class="col-md-3">encapsulation</td>
                <td class="col-md-9"><code>ViewEncapsulation.None</code></td>
            </tr>







            <tr>
                <td class="col-md-3">providers</td>
                <td class="col-md-9">
                                <code><a href="../injectables/ResourceService.html" target="_self" >ResourceService</a></code>
                </td>
            </tr>


            <tr>
                <td class="col-md-3">selector</td>
                <td class="col-md-9"><code>hi-node-viewer</code></td>
            </tr>

            <tr>
                <td class="col-md-3">styleUrls</td>
                <td class="col-md-9"><code>./node-viewer.component.scss</code></td>
            </tr>



            <tr>
                <td class="col-md-3">templateUrl</td>
                <td class="col-md-9"><code>./node-viewer.component.html</code></td>
            </tr>








        </tbody>
    </table>
</section>

    <section>
    <h3 id="index">Index</h3>
    <table class="table table-sm table-bordered index-table">
        <tbody>
                <tr>
                    <td class="col-md-4">
                        <h6><b>Properties</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                    <span class="modifier">Private</span>
                                <a href="#_editable" >_editable</a>
                            </li>
                            <li>
                                <a href="#_listConfigs" >_listConfigs</a>
                            </li>
                            <li>
                                <a href="#_mapConfigs" >_mapConfigs</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#_obj" >_obj</a>
                            </li>
                            <li>
                                <a href="#_simpleConfigs" >_simpleConfigs</a>
                            </li>
                            <li>
                                <a href="#clusterName" >clusterName</a>
                            </li>
                            <li>
                                <a href="#columns" >columns</a>
                            </li>
                            <li>
                                <a href="#headerHeight" >headerHeight</a>
                            </li>
                            <li>
                                <a href="#isLoading" >isLoading</a>
                            </li>
                            <li>
                                <a href="#keyword" >keyword</a>
                            </li>
                            <li>
                                <a href="#listTable" >listTable</a>
                            </li>
                            <li>
                                <a href="#mapTable" >mapTable</a>
                            </li>
                            <li>
                                    <span class="modifier">Protected</span>
                                <a href="#node" >node</a>
                            </li>
                            <li>
                                <a href="#resourceName" >resourceName</a>
                            </li>
                            <li>
                                <a href="#rowHeight" >rowHeight</a>
                            </li>
                            <li>
                                <a href="#simpleTable" >simpleTable</a>
                            </li>
                            <li>
                                <a href="#sorts" >sorts</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Methods</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#beforeDelete" >beforeDelete</a>
                            </li>
                            <li>
                                <a href="#created" >created</a>
                            </li>
                            <li>
                                <a href="#edited" >edited</a>
                            </li>
                            <li>
                                <a href="#getNameCellClass" >getNameCellClass</a>
                            </li>
                            <li>
                                <a href="#ngOnInit" >ngOnInit</a>
                            </li>
                            <li>
                                <a href="#onCreate" >onCreate</a>
                            </li>
                            <li>
                                <a href="#onDelete" >onDelete</a>
                            </li>
                            <li>
                                <a href="#updateFilter" >updateFilter</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Inputs</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#loadingIndicator" >loadingIndicator</a>
                            </li>
                            <li>
                                <a href="#obj" >obj</a>
                            </li>
                            <li>
                                <a href="#unlockable" >unlockable</a>
                            </li>
                        </ul>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <h6><b>Outputs</b></h6>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <ul class="index-list">
                            <li>
                                <a href="#create" >create</a>
                            </li>
                            <li>
                                <a href="#delete" >delete</a>
                            </li>
                            <li>
                                <a href="#update" >update</a>
                            </li>
                        </ul>
                    </td>
                </tr>



                    <tr>
                        <td class="col-md-4">
                            <h6><b>Accessors</b></h6>
                        </td>
                    </tr>
                    <tr>
                        <td class="col-md-4">
                            <ul class="index-list">
                                <li>
                                    <a href="#obj" >obj</a>
                                </li>
                                <li>
                                    <a href="#objString" >objString</a>
                                </li>
                                <li>
                                    <a href="#editable" >editable</a>
                                </li>
                                <li>
                                    <a href="#simpleConfigs" >simpleConfigs</a>
                                </li>
                                <li>
                                    <a href="#listConfigs" >listConfigs</a>
                                </li>
                                <li>
                                    <a href="#mapConfigs" >mapConfigs</a>
                                </li>
                            </ul>
                        </td>
                    </tr>
        </tbody>
    </table>
</section>

    <section>
    <h3 id="constructor">Constructor</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                                <span class="modifier">Public</span>
                        <code>constructor(dialog: MatDialog, route: <a href="https://angular.io/api/router/ActivatedRoute" target="_blank">ActivatedRoute</a>, resourceService: <a href="../injectables/ResourceService.html" target="_self">ResourceService</a>, helper: <a href="../injectables/HelperService.html" target="_self">HelperService</a>)</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="178" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:178</a></div>
                            </td>
                        </tr>

                <tr>
                    <td class="col-md-4">
                            <div>
                                    <b>Parameters :</b>
                                    <table class="params">
                                        <thead>
                                            <tr>
                                                <td>Name</td>
                                                    <td>Type</td>
                                                <td>Optional</td>
                                            </tr>
                                        </thead>
                                        <tbody>
                                                <tr>
                                                        <td>dialog</td>
                                                  
                                                        <td>
                                                                    <code>MatDialog</code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>route</td>
                                                  
                                                        <td>
                                                                        <code><a href="https://angular.io/api/router/ActivatedRoute" target="_blank" >ActivatedRoute</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>resourceService</td>
                                                  
                                                        <td>
                                                                        <code><a href="../injectables/ResourceService.html" target="_self" >ResourceService</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                                <tr>
                                                        <td>helper</td>
                                                  
                                                        <td>
                                                                        <code><a href="../injectables/HelperService.html" target="_self" >HelperService</a></code>
                                                        </td>
                                                  
                                                    <td>
                                                            No
                                                    </td>
                                                    
                                                </tr>
                                        </tbody>
                                    </table>
                            </div>
                    </td>
                </tr>
            </tbody>
        </table>
</section>

    <section>
    <h3 id="inputs">Inputs</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="loadingIndicator"></a>
                        <b>loadingIndicator</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>false</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="73" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:73</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="obj"></a>
                        <b>obj</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="111" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:111</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="unlockable"></a>
                        <b>unlockable</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>false</code>
                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="70" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:70</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
</section>
    <section>
    <h3 id="outputs">Outputs</h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="create"></a>
                        <b>create</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="64" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:64</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="delete"></a>
                        <b>delete</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="67" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:67</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="update"></a>
                        <b>update</b>
                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../classes/Node.html" target="_self" >EventEmitter&lt;Node&gt;</a></code>

                    </td>
                </tr>
                        <tr>
                            <td class="col-md-2" colspan="2">
                                    <div class="io-line">Defined in <a href="" data-line="61" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:61</a></div>
                            </td>
                        </tr>
            </tbody>
        </table>
</section>


    <section>
    
    <h3 id="methods">
        Methods
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="beforeDelete"></a>
                    <span class="name">
                        <span ><b>beforeDelete</b></span>
                        <a href="#beforeDelete"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>beforeDelete(type, row)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="269"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:269</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>type</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>row</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="created"></a>
                    <span class="name">
                        <span ><b>created</b></span>
                        <a href="#created"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>created(type, data, key)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="299"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:299</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>type</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>data</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>key</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="edited"></a>
                    <span class="name">
                        <span ><b>edited</b></span>
                        <a href="#edited"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>edited(type, undefined, key, isDeleting)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="336"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:336</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>type</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>key</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>isDeleting</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="getNameCellClass"></a>
                    <span class="name">
                        <span ><b>getNameCellClass</b></span>
                        <a href="#getNameCellClass"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>getNameCellClass(undefined)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="226"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:226</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="ngOnInit"></a>
                    <span class="name">
                        <span ><b>ngOnInit</b></span>
                        <a href="#ngOnInit"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>ngOnInit()</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="187"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:187</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="onCreate"></a>
                    <span class="name">
                        <span ><b>onCreate</b></span>
                        <a href="#onCreate"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>onCreate(type)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="233"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:233</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>type</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="onDelete"></a>
                    <span class="name">
                        <span ><b>onDelete</b></span>
                        <a href="#onDelete"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>onDelete(type, row)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="285"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:285</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>type</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                                <tr>
                                    <td>row</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="updateFilter"></a>
                    <span class="name">
                        <span ><b>updateFilter</b></span>
                        <a href="#updateFilter"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
            <tr>
                <td class="col-md-4">
<code>updateFilter(event)</code>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">
                    <div class="io-line">Defined in <a href="" data-line="211"
                            class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:211</a></div>
                </td>
            </tr>


            <tr>
                <td class="col-md-4">

                    <div class="io-description">
                        <b>Parameters :</b>
                        
                        <table class="params">
                            <thead>
                                <tr>
                                    <td>Name</td>
                                    <td>Optional</td>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td>event</td>

                                    <td>
                                        No
                                    </td>


                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div>
                    </div>
                    <div class="io-description">
                        <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                    </div>
                    <div class="io-description">
                        
                    </div>
                </td>
            </tr>
        </tbody>
    </table>
</section>
    <section>
    
    <h3 id="inputs">
        Properties
    </h3>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_editable"></a>
                    <span class="name">
                            <span class="modifier">Private</span>
                        <span ><b>_editable</b></span>
                        <a href="#_editable"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>false</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="75" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:75</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_listConfigs"></a>
                    <span class="name">
                        <span ><b>_listConfigs</b></span>
                        <a href="#_listConfigs"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>any[]</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="105" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:105</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_mapConfigs"></a>
                    <span class="name">
                        <span ><b>_mapConfigs</b></span>
                        <a href="#_mapConfigs"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>any[]</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="107" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:107</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_obj"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>_obj</b></span>
                        <a href="#_obj"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="77" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:77</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="_simpleConfigs"></a>
                    <span class="name">
                        <span ><b>_simpleConfigs</b></span>
                        <a href="#_simpleConfigs"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>any[]</code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="103" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:103</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="clusterName"></a>
                    <span class="name">
                        <span ><b>clusterName</b></span>
                        <a href="#clusterName"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="54" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:54</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="columns"></a>
                    <span class="name">
                        <span ><b>columns</b></span>
                        <a href="#columns"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/object" target="_blank" >object</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>{
    simpleConfigs: [
      {
        name: &#x27;Name&#x27;,
        editable: false,
      },
      {
        name: &#x27;Value&#x27;,
        editable: false,
      },
    ],
    listConfigs: [
      {
        name: &#x27;Value&#x27;,
        editable: false,
      },
    ],
  }</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="84" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:84</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="headerHeight"></a>
                    <span class="name">
                        <span ><b>headerHeight</b></span>
                        <a href="#headerHeight"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>Settings.tableHeaderHeight</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="80" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:80</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="isLoading"></a>
                    <span class="name">
                        <span ><b>isLoading</b></span>
                        <a href="#isLoading"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>true</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="53" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:53</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="keyword"></a>
                    <span class="name">
                        <span ><b>keyword</b></span>
                        <a href="#keyword"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>&#x27;&#x27;</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="83" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:83</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="listTable"></a>
                    <span class="name">
                        <span ><b>listTable</b></span>
                        <a href="#listTable"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @ViewChild(&#x27;listTable&#x27;, {static: true})<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="57" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:57</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="mapTable"></a>
                    <span class="name">
                        <span ><b>mapTable</b></span>
                        <a href="#mapTable"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @ViewChild(&#x27;mapTable&#x27;, {static: true})<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="58" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:58</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="node"></a>
                    <span class="name">
                            <span class="modifier">Protected</span>
                        <span ><b>node</b></span>
                        <a href="#node"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="../classes/Node.html" target="_self" >Node</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="78" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:78</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="resourceName"></a>
                    <span class="name">
                        <span ><b>resourceName</b></span>
                        <a href="#resourceName"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>        <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/string" target="_blank" >string</a></code>

                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="55" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:55</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="rowHeight"></a>
                    <span class="name">
                        <span ><b>rowHeight</b></span>
                        <a href="#rowHeight"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>Settings.tableRowHeight</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="81" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:81</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="simpleTable"></a>
                    <span class="name">
                        <span ><b>simpleTable</b></span>
                        <a href="#simpleTable"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <b>Decorators : </b>
                        <br />
                        <code>
                            @ViewChild(&#x27;simpleTable&#x27;, {static: true})<br />
                        </code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="56" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:56</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
    <table class="table table-sm table-bordered">
        <tbody>
            <tr>
                <td class="col-md-4">
                    <a name="sorts"></a>
                    <span class="name">
                        <span ><b>sorts</b></span>
                        <a href="#sorts"><span class="icon ion-ios-link"></span></a>
                    </span>
                </td>
            </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Type : </i>    <code>[]</code>

                    </td>
                </tr>
                <tr>
                    <td class="col-md-4">
                        <i>Default value : </i><code>[{ prop: &#x27;name&#x27;, dir: &#x27;asc&#x27; }]</code>
                    </td>
                </tr>
                    <tr>
                        <td class="col-md-4">
                                <div class="io-line">Defined in <a href="" data-line="82" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:82</a></div>
                        </td>
                    </tr>


        </tbody>
    </table>
</section>

    <section>
    <h3 id="accessors">
        Accessors
    </h3>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="obj"></a>
                        <span class="name"><b>obj</b><a href="#obj"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>obj()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="117" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:117</a></div>
                                </td>
                            </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>obj(value: <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank">any</a>)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="111" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:111</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>value</td>
                                                    
                                                            <td>
                                                                            <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >any</a></code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="objString"></a>
                        <span class="name"><b>objString</b><a href="#objString"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>objString()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="129" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:129</a></div>
                                </td>
                            </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>objString(value: string | null)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="120" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:120</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>value</td>
                                                    
                                                            <td>
                                                                        <code>string | null</code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="editable"></a>
                        <span class="name"><b>editable</b><a href="#editable"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>editable()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="137" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:137</a></div>
                                </td>
                            </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>set</b><code>editable(value: <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank">boolean</a>)</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="132" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:132</a></div>
                                </td>
                            </tr>
                    <tr>
                        <td class="col-md-4">

                                <div class="io-description">
                                        <b>Parameters :</b>
                                        <table class="params">
                                            <thead>
                                                <tr>
                                                    <td>Name</td>
                                                        <td>Type</td>
                                                    <td>Optional</td>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                    <tr>
                                                            <td>value</td>
                                                    
                                                            <td>
                                                                            <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/boolean" target="_blank" >boolean</a></code>
                                                            </td>
                                                    
                                                        <td>
                                                                No
                                                        </td>
                                                        
                                                    </tr>
                                            </tbody>
                                        </table>
                                </div>
                                <div>
                                </div>
                                <div class="io-description">
                                    <b>Returns : </b>        <code><a href="https://www.typescriptlang.org/docs/handbook/basic-types.html" target="_blank" >void</a></code>

                                </div>
                        </td>
                    </tr>
            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="simpleConfigs"></a>
                        <span class="name"><b>simpleConfigs</b><a href="#simpleConfigs"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>simpleConfigs()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="140" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:140</a></div>
                                </td>
                            </tr>

            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="listConfigs"></a>
                        <span class="name"><b>listConfigs</b><a href="#listConfigs"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>listConfigs()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="150" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:150</a></div>
                                </td>
                            </tr>

            </tbody>
        </table>
        <table class="table table-sm table-bordered">
            <tbody>
                <tr>
                    <td class="col-md-4">
                        <a name="mapConfigs"></a>
                        <span class="name"><b>mapConfigs</b><a href="#mapConfigs"><span class="icon ion-ios-link"></span></a></span>
                    </td>
                </tr>

                <tr>
                    <td class="col-md-4">
                        <span class="accessor"><b>get</b><code>mapConfigs()</code></span>
                    </td>
                </tr>
                            <tr>
                                <td class="col-md-4">
                                    <div class="io-line">Defined in <a href="" data-line="164" class="link-to-prism">src/app/shared/node-viewer/node-viewer.component.ts:164</a></div>
                                </td>
                            </tr>

            </tbody>
        </table>
</section>
</div>


    <div class="tab-pane fade  tab-source-code" id="c-source">
        <pre class="line-numbers compodoc-sourcecode"><code class="language-typescript">import {
  Component,
  OnInit,
  Input,
  Output,
  ViewChild,
  ViewEncapsulation,
  EventEmitter,
} from &#x27;@angular/core&#x27;;
import { ActivatedRoute } from &#x27;@angular/router&#x27;;
import { MatDialog } from &#x27;@angular/material/dialog&#x27;;

import * as _ from &#x27;lodash&#x27;;
// import * as ace from &#x27;ace-builds/src-noconflict/ace&#x27;;
import &#x27;ace-builds&#x27;;
import &#x27;ace-builds/webpack-resolver&#x27;;
import &#x27;ace-builds/src-noconflict/mode-json&#x27;;
import &#x27;ace-builds/src-noconflict/theme-chrome&#x27;;
import { config } from &#x27;ace-builds&#x27;;

import { ResourceService } from &#x27;../../resource/shared/resource.service&#x27;;
import { HelperService } from &#x27;../../shared/helper.service&#x27;;
import { Node } from &#x27;../models/node.model&#x27;;
import { Settings } from &#x27;../../core/settings&#x27;;
import { InputDialogComponent } from &#x27;../dialog/input-dialog/input-dialog.component&#x27;;
import { ConfirmDialogComponent } from &#x27;../dialog/confirm-dialog/confirm-dialog.component&#x27;;

export type IdealState &#x3D; {
  id: string;
  simpleFields?: { [key: string]: any };
  listFields?: { [key: string]: any };
  mapFields?: { [key: string]: any };
};

config.set(
  &#x27;basePath&#x27;,
  &#x27;https://cdn.jsdelivr.net/npm/ace-builds@1.6.0/src-noconflict/&#x27;
);
config.setModuleUrl(
  &#x27;ace/mode/javascript_worker&#x27;,
  &#x27;https://cdn.jsdelivr.net/npm/ace-builds@1.6.0/src-noconflict/worker-json.js&#x27;
);
@Component({
  selector: &#x27;hi-node-viewer&#x27;,
  templateUrl: &#x27;./node-viewer.component.html&#x27;,
  styleUrls: [&#x27;./node-viewer.component.scss&#x27;],
  providers: [ResourceService],
  // Since we are importing external styles in this component
  // we will not use Shadow DOM at all to make sure the styles apply
  encapsulation: ViewEncapsulation.None,
})
export class NodeViewerComponent implements OnInit {
  isLoading &#x3D; true;
  clusterName: string;
  resourceName: string;
  @ViewChild(&#x27;simpleTable&#x27;, { static: true }) simpleTable;
  @ViewChild(&#x27;listTable&#x27;, { static: true }) listTable;
  @ViewChild(&#x27;mapTable&#x27;, { static: true }) mapTable;

  @Output(&#x27;update&#x27;)
  change: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();

  @Output(&#x27;create&#x27;)
  create: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();

  @Output(&#x27;delete&#x27;)
  delete: EventEmitter&lt;Node&gt; &#x3D; new EventEmitter&lt;Node&gt;();

  @Input()
  unlockable &#x3D; false;

  @Input()
  loadingIndicator &#x3D; false;

  private _editable &#x3D; false;

  protected _obj: any;
  protected node: Node;

  headerHeight &#x3D; Settings.tableHeaderHeight;
  rowHeight &#x3D; Settings.tableRowHeight;
  sorts &#x3D; [{ prop: &#x27;name&#x27;, dir: &#x27;asc&#x27; }];
  keyword &#x3D; &#x27;&#x27;;
  columns &#x3D; {
    simpleConfigs: [
      {
        name: &#x27;Name&#x27;,
        editable: false,
      },
      {
        name: &#x27;Value&#x27;,
        editable: false,
      },
    ],
    listConfigs: [
      {
        name: &#x27;Value&#x27;,
        editable: false,
      },
    ],
  };

  _simpleConfigs: any[];

  _listConfigs: any[];

  _mapConfigs: any[];

  // MODE 1: use directly in components
  @Input()
  set obj(value: any) {
    if (value !&#x3D;&#x3D; null) {
      this._obj &#x3D; value;
      this.node &#x3D; new Node(value);
    }
  }
  get obj(): any {
    return this._obj;
  }
  set objString(value: string | null) {
    let parsedValue &#x3D; null;
    if (value &amp;&amp; value !&#x3D;&#x3D; null) {
      parsedValue &#x3D; JSON.parse(value);
    }

    this.obj &#x3D; parsedValue;
    this.node &#x3D; new Node(parsedValue);
  }
  get objString(): string {
    return JSON.stringify(this.obj, null, 2);
  }
  set editable(value: boolean) {
    this._editable &#x3D; value;
    this.columns.simpleConfigs[1].editable &#x3D; this._editable;
    this.columns.listConfigs[0].editable &#x3D; this._editable;
  }
  get editable() {
    return this._editable;
  }
  get simpleConfigs(): any[] {
    return this.node
      ? _.filter(
          this.node.simpleFields,
          (config) &#x3D;&gt;
            config.name.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0 ||
            config.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
        )
      : [];
  }
  get listConfigs(): any[] {
    return this.node
      ? _.filter(
          this.node.listFields,
          (config) &#x3D;&gt;
            config.name.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0 ||
            _.some(
              config.value as any[],
              (subconfig) &#x3D;&gt;
                subconfig.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
            )
        )
      : [];
  }
  get mapConfigs(): any[] {
    return this.node
      ? _.filter(
          this.node.mapFields,
          (config) &#x3D;&gt;
            config.name.toLowerCase().trim().indexOf(this.keyword) &gt;&#x3D; 0 ||
            _.some(
              config.value as any[],
              (subconfig) &#x3D;&gt;
                subconfig.name.toLowerCase().trim().indexOf(this.keyword) &gt;&#x3D;
                  0 || subconfig.value.toLowerCase().indexOf(this.keyword) &gt;&#x3D; 0
            )
        )
      : [];
  }

  public constructor(
    protected dialog: MatDialog,
    protected route: ActivatedRoute,
    protected resourceService: ResourceService,
    protected helper: HelperService
  ) {}

  ngOnInit() {
    // MODE 2: use in router
    if (this.route.snapshot.data.path) {
      const path &#x3D; this.route.snapshot.data.path;

      // try parent data first
      this.obj &#x3D; _.get(this.route.parent, &#x60;snapshot.data.${path}&#x60;);

      if (this.obj &#x3D;&#x3D; null) {
        // try self data then
        this.obj &#x3D; _.get(this.route.snapshot.data, path);
      }

      this.objString &#x3D; JSON.stringify(this.obj, null, 2);
    }

    if (this.route.parent) {
      this.clusterName &#x3D;
        this.route.parent.snapshot.params.name ||
        this.route.parent.snapshot.params.cluster_name;
      this.resourceName &#x3D; this.route.parent.snapshot.params.resource_name;
    }
  }

  updateFilter(event) {
    this.keyword &#x3D; event.target.value.toLowerCase().trim();

    // Whenever the filter changes, always go back to the first page
    if (this.simpleTable) {
      this.simpleTable.offset &#x3D; 0;
    }
    if (this.listTable) {
      this.listTable.offset &#x3D; 0;
    }
    if (this.mapTable) {
      this.mapTable.offset &#x3D; 0;
    }
  }

  getNameCellClass({ value }): any {
    return {
      // highlight HELIX own configs
      primary: _.snakeCase(value).toUpperCase() &#x3D;&#x3D;&#x3D; value,
    };
  }

  onCreate(type) {
    this.dialog
      .open(InputDialogComponent, {
        data: {
          title: &#x60;Create a new ${type} configuration&#x60;,
          message:
            &quot;Please enter the name of the new configuration. You&#x27;ll be able to add values later:&quot;,
          values: {
            name: {
              label: &#x27;the name of the new configuration&#x27;,
            },
          },
        },
      })
      .afterClosed()
      .subscribe((result) &#x3D;&gt; {
        if (result) {
          const entry &#x3D; [
            {
              name: result.name.value,
              value: [],
            },
          ];

          const newNode: Node &#x3D; new Node(null);
          if (type &#x3D;&#x3D;&#x3D; &#x27;list&#x27;) {
            newNode.listFields &#x3D; entry;
          } else if (type &#x3D;&#x3D;&#x3D; &#x27;map&#x27;) {
            newNode.mapFields &#x3D; entry;
          }

          this.create.emit(newNode);
        }
      });
  }

  beforeDelete(type, row) {
    this.dialog
      .open(ConfirmDialogComponent, {
        data: {
          title: &#x27;Confirmation&#x27;,
          message: &#x27;Are you sure you want to delete this configuration?&#x27;,
        },
      })
      .afterClosed()
      .subscribe((result) &#x3D;&gt; {
        if (result) {
          this.onDelete(type, row);
        }
      });
  }

  onDelete(type, row) {
    const newNode: Node &#x3D; new Node(null);

    if (type &#x3D;&#x3D;&#x3D; &#x27;simple&#x27;) {
      newNode.appendSimpleField(row.name, &#x27;&#x27;);
    } else if (type &#x3D;&#x3D;&#x3D; &#x27;list&#x27;) {
      newNode.listFields &#x3D; [{ name: row.name.trim(), value: [] }];
    } else if (type &#x3D;&#x3D;&#x3D; &#x27;map&#x27;) {
      newNode.mapFields &#x3D; [{ name: row.name.trim(), value: null }];
    }

    this.delete.emit(newNode);
  }

  created(type, data, key) {
    const newNode: Node &#x3D; new Node(null);

    switch (type) {
      case &#x27;simple&#x27;:
        newNode.appendSimpleField(data.name.value, data.value.value);
        break;

      case &#x27;list&#x27;:
        if (key) {
          const entry &#x3D; _.find(this.node.listFields, { name: key });

          entry.value.push({
            name: &#x27;&#x27;,
            value: data.value.value,
          });

          newNode.listFields.push(entry);
        }
        break;

      case &#x27;map&#x27;:
        if (key) {
          const entry &#x3D; _.find(this.node.mapFields, { name: key.trim() });

          _.forEach(entry.value, (item: any) &#x3D;&gt; {
            newNode.appendMapField(key, item.name, item.value);
          });

          newNode.appendMapField(key, data.name.value, data.value.value);
        }
        break;
    }

    this.create.emit(newNode);
  }

  edited(type, { row, column, value }, key, isDeleting) {
    if (!isDeleting &amp;&amp; column.name !&#x3D;&#x3D; &#x27;Value&#x27;) {
      return;
    }

    const newNode: Node &#x3D; new Node(null);

    switch (type) {
      case &#x27;simple&#x27;:
        newNode.appendSimpleField(row.name, value);
        break;

      case &#x27;list&#x27;:
        if (key) {
          const entry &#x3D; _.find(this.node.listFields, { name: key });
          const index &#x3D; _.findIndex(entry.value, { value: row.value });

          if (isDeleting) {
            entry.value.splice(index, 1);
          } else {
            entry.value[index].value &#x3D; value;
          }

          newNode.listFields.push(entry);
        }
        break;

      case &#x27;map&#x27;:
        if (key) {
          // have to fetch all other configs under this key
          const entry &#x3D; _.find(this.node.mapFields, { name: key.trim() });
          newNode.mapFields &#x3D; [{ name: key.trim(), value: [] }];

          _.forEach(entry.value, (item: any) &#x3D;&gt; {
            if (item.name &#x3D;&#x3D;&#x3D; row.name) {
              if (!isDeleting) {
                newNode.appendMapField(key.trim(), item.name.trim(), value);
              }
            } else {
              newNode.appendMapField(key.trim(), item.name.trim(), item.value);
            }
          });
        }
        break;
    }

    const path &#x3D; this?.route?.snapshot?.data?.path;
    if (path &amp;&amp; path &#x3D;&#x3D;&#x3D; &#x27;idealState&#x27;) {
      const idealState: IdealState &#x3D; {
        id: this.resourceName,
      };

      // format the payload the way that helix-rest expects
      // before: { simpleFields: [{ name: &#x27;NUM_PARTITIONS&#x27;, value: 2 }] };
      // after:  { simpleFields: { NUM_PARTITIONS: 2 } };
      function appendIdealStateProperty(property: keyof Node) {
        if (Array.isArray(newNode[property]) &amp;&amp; newNode[property].length &gt; 0) {
          idealState[property] &#x3D; {} as any;
          (newNode[property] as any[]).forEach((field) &#x3D;&gt; {
            idealState[property][field.name] &#x3D; field.value;
          });
        }
      }
      Object.keys(newNode).forEach((key) &#x3D;&gt;
        appendIdealStateProperty(key as keyof Node)
      );

      const observer &#x3D; this.resourceService.setIdealState(
        this.clusterName,
        this.resourceName,
        idealState
      );

      if (observer) {
        this.isLoading &#x3D; true;
        observer.subscribe(
          () &#x3D;&gt; {
            this.helper.showSnackBar(&#x27;Ideal State updated!&#x27;);
          },
          (error) &#x3D;&gt; {
            this.helper.showError(error);
            this.isLoading &#x3D; false;
          },
          () &#x3D;&gt; (this.isLoading &#x3D; false)
        );
      }
    }

    this.change.emit(newNode);
  }
}
</code></pre>
    </div>

    <div class="tab-pane fade " id="c-templateData">
        <pre class="line-numbers"><code class="language-html">&lt;!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ &quot;License&quot;); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  --&gt;

&lt;section
  class&#x3D;&quot;node-viewer&quot;
  fxLayout&#x3D;&quot;column&quot;
  fxLayoutAlign&#x3D;&quot;center center&quot;
  fxLayoutGap&#x3D;&quot;10px&quot;
&gt;
  &lt;mat-progress-bar
    *ngIf&#x3D;&quot;loadingIndicator&quot;
    mode&#x3D;&quot;indeterminate&quot;
  &gt;&lt;/mat-progress-bar&gt;
  &lt;mat-button-toggle-group #group&#x3D;&quot;matButtonToggleGroup&quot; value&#x3D;&quot;table&quot;&gt;
    &lt;mat-button-toggle value&#x3D;&quot;table&quot;&gt; Table View &lt;/mat-button-toggle&gt;
    &lt;mat-button-toggle value&#x3D;&quot;tree&quot;&gt; Tree View &lt;/mat-button-toggle&gt;
    &lt;mat-button-toggle value&#x3D;&quot;json&quot;&gt; JSON View &lt;/mat-button-toggle&gt;
  &lt;/mat-button-toggle-group&gt;
  &lt;section class&#x3D;&quot;viewer&quot; [ngSwitch]&#x3D;&quot;group.value&quot; fxFlexFill&gt;
    &lt;ngx-json-viewer *ngSwitchCase&#x3D;&quot;&#x27;tree&#x27;&quot; [json]&#x3D;&quot;obj&quot;&gt;&lt;/ngx-json-viewer&gt;
    &lt;ace-editor
      *ngSwitchCase&#x3D;&quot;&#x27;json&#x27;&quot;
      [(text)]&#x3D;&quot;objString&quot;
      mode&#x3D;&quot;json&quot;
      theme&#x3D;&quot;chrome&quot;
      [options]&#x3D;&quot;{ useWorker: false }&quot;
      style&#x3D;&quot;min-height: 300px&quot;
      #editor
    &gt;
    &lt;/ace-editor&gt;
    &lt;section *ngSwitchCase&#x3D;&quot;&#x27;table&#x27;&quot;&gt;
      &lt;!-- TODO vxu: use mat-simple-table when it&#x27;s available --&gt;

      &lt;section fxLayout&#x3D;&quot;row&quot; fxLayoutAlign&#x3D;&quot;center center&quot;&gt;
        &lt;span fxFlex&#x3D;&quot;1 1 auto&quot;&gt;&lt;/span&gt;
        &lt;mat-icon&gt;search&lt;/mat-icon&gt;
        &lt;mat-form-field class&#x3D;&quot;search-form-field&quot;&gt;
          &lt;input
            matInput
            placeholder&#x3D;&quot;Type to filter the fields...&quot;
            (keyup)&#x3D;&quot;updateFilter($event)&quot;
          /&gt;
        &lt;/mat-form-field&gt;
        &lt;span fxFlex&#x3D;&quot;1 1 auto&quot;&gt;&lt;/span&gt;
        &lt;!-- *ngIf&#x3D;&quot;unlockable&quot; --&gt;
        &lt;button
          mat-button
          (click)&#x3D;&quot;editable &#x3D; !editable&quot;
          [matTooltip]&#x3D;&quot;
            editable
              ? &#x27;Click to prevent further changes&#x27;
              : &#x27;Click to make changes&#x27;
          &quot;
        &gt;
          &lt;mat-icon&gt;{{ editable ? &#x27;lock_open&#x27; : &#x27;lock&#x27; }}&lt;/mat-icon&gt;
          {{ editable ? &#x27;Unlocked&#x27; : &#x27;Locked&#x27; }}
        &lt;/button&gt;
      &lt;/section&gt;

      &lt;mat-card&gt;
        &lt;mat-card-header&gt;
          &lt;mat-card-title&gt;
            Simple Fields
            &lt;span *ngIf&#x3D;&quot;simpleConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
            &lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
          &lt;/mat-card-title&gt;
        &lt;/mat-card-header&gt;
        &lt;mat-card-content&gt;
          &lt;hi-data-table
            *ngIf&#x3D;&quot;simpleConfigs.length || editable&quot;
            [rows]&#x3D;&quot;simpleConfigs&quot;
            [sorts]&#x3D;&quot;sorts&quot;
            [columns]&#x3D;&quot;columns.simpleConfigs&quot;
            [deletable]&#x3D;&quot;editable&quot;
            [insertable]&#x3D;&quot;editable&quot;
            (update)&#x3D;&quot;edited(&#x27;simple&#x27;, $event)&quot;
            (create)&#x3D;&quot;created(&#x27;simple&#x27;, $event)&quot;
            (delete)&#x3D;&quot;onDelete(&#x27;simple&#x27;, $event.row)&quot;
          &gt;
          &lt;/hi-data-table&gt;
        &lt;/mat-card-content&gt;
      &lt;/mat-card&gt;

      &lt;mat-card&gt;
        &lt;mat-card-header&gt;
          &lt;mat-card-title&gt;
            List Fields
            &lt;span *ngIf&#x3D;&quot;listConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
            &lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
          &lt;/mat-card-title&gt;
        &lt;/mat-card-header&gt;
        &lt;mat-card-content&gt;
          &lt;ngx-datatable
            *ngIf&#x3D;&quot;listConfigs.length || editable&quot;
            #listTable
            class&#x3D;&quot;material&quot;
            [headerHeight]&#x3D;&quot;headerHeight&quot;
            rowHeight&#x3D;&quot;auto&quot;
            [footerHeight]&#x3D;&quot;headerHeight&quot;
            columnMode&#x3D;&quot;force&quot;
            [rows]&#x3D;&quot;listConfigs&quot;
            [sorts]&#x3D;&quot;sorts&quot;
            [limit]&#x3D;&quot;10&quot;
          &gt;
            &lt;ngx-datatable-column
              *ngIf&#x3D;&quot;editable&quot;
              [width]&#x3D;&quot;40&quot;
              [resizeable]&#x3D;&quot;false&quot;
              [draggable]&#x3D;&quot;false&quot;
              [canAutoResize]&#x3D;&quot;false&quot;
            &gt;
              &lt;ng-template let-row&#x3D;&quot;row&quot; ngx-datatable-cell-template&gt;
                &lt;button
                  mat-icon-button
                  class&#x3D;&quot;delete-button&quot;
                  matTooltip&#x3D;&quot;Click to delete&quot;
                  (click)&#x3D;&quot;beforeDelete(&#x27;list&#x27;, row)&quot;
                &gt;
                  &lt;mat-icon&gt;delete_forever&lt;/mat-icon&gt;
                &lt;/button&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-column
              name&#x3D;&quot;Name&quot;
              [width]&#x3D;&quot;80&quot;
              [cellClass]&#x3D;&quot;getNameCellClass&quot;
            &gt;&lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-column name&#x3D;&quot;Value&quot; [width]&#x3D;&quot;400&quot;&gt;
              &lt;ng-template
                let-row&#x3D;&quot;row&quot;
                let-value&#x3D;&quot;value&quot;
                ngx-datatable-cell-template
              &gt;
                &lt;hi-data-table
                  [rows]&#x3D;&quot;value&quot;
                  [sorts]&#x3D;&quot;sorts&quot;
                  [columns]&#x3D;&quot;columns.listConfigs&quot;
                  [deletable]&#x3D;&quot;editable&quot;
                  [insertable]&#x3D;&quot;editable&quot;
                  (update)&#x3D;&quot;edited(&#x27;list&#x27;, $event, row.name)&quot;
                  (create)&#x3D;&quot;created(&#x27;list&#x27;, $event, row.name)&quot;
                  (delete)&#x3D;&quot;edited(&#x27;list&#x27;, $event, row.name, true)&quot;
                &gt;
                &lt;/hi-data-table&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-footer&gt;
              &lt;ng-template
                ngx-datatable-footer-template
                let-rowCount&#x3D;&quot;rowCount&quot;
                let-pageSize&#x3D;&quot;pageSize&quot;
                let-curPage&#x3D;&quot;curPage&quot;
              &gt;
                &lt;section
                  class&#x3D;&quot;footer&quot;
                  fxLayout&#x3D;&quot;row&quot;
                  fxLayoutAlign&#x3D;&quot;space-between center&quot;
                &gt;
                  &lt;button
                    mat-button
                    *ngIf&#x3D;&quot;editable&quot;
                    (click)&#x3D;&quot;onCreate(&#x27;list&#x27;)&quot;
                  &gt;
                    &lt;mat-icon&gt;add&lt;/mat-icon&gt;
                    Add new entry
                  &lt;/button&gt;
                  &lt;section&gt;{{ rowCount }} total&lt;/section&gt;
                  &lt;section&gt;
                    &lt;datatable-pager
                      [pagerLeftArrowIcon]&#x3D;&quot;&#x27;datatable-icon-left&#x27;&quot;
                      [pagerRightArrowIcon]&#x3D;&quot;&#x27;datatable-icon-right&#x27;&quot;
                      [pagerPreviousIcon]&#x3D;&quot;&#x27;datatable-icon-prev&#x27;&quot;
                      [pagerNextIcon]&#x3D;&quot;&#x27;datatable-icon-skip&#x27;&quot;
                      [page]&#x3D;&quot;curPage&quot;
                      [size]&#x3D;&quot;pageSize&quot;
                      [count]&#x3D;&quot;rowCount&quot;
                      [hidden]&#x3D;&quot;!(rowCount / pageSize &gt; 1)&quot;
                      (change)&#x3D;&quot;listTable.onFooterPage($event)&quot;
                    &gt;
                    &lt;/datatable-pager&gt;
                  &lt;/section&gt;
                &lt;/section&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-footer&gt;
          &lt;/ngx-datatable&gt;
        &lt;/mat-card-content&gt;
      &lt;/mat-card&gt;

      &lt;mat-card&gt;
        &lt;mat-card-header&gt;
          &lt;mat-card-title&gt;
            Map Fields
            &lt;span *ngIf&#x3D;&quot;mapConfigs.length &#x3D;&#x3D; 0&quot;&gt;is empty.&lt;/span&gt;
            &lt;span *ngIf&#x3D;&quot;keyword&quot; class&#x3D;&quot;primary&quot;&gt;(filtered)&lt;/span&gt;
          &lt;/mat-card-title&gt;
        &lt;/mat-card-header&gt;
        &lt;mat-card-content&gt;
          &lt;ngx-datatable
            *ngIf&#x3D;&quot;mapConfigs.length || editable&quot;
            #mapTable
            class&#x3D;&quot;material&quot;
            [headerHeight]&#x3D;&quot;headerHeight&quot;
            rowHeight&#x3D;&quot;auto&quot;
            [footerHeight]&#x3D;&quot;headerHeight&quot;
            columnMode&#x3D;&quot;force&quot;
            [rows]&#x3D;&quot;mapConfigs&quot;
            [sorts]&#x3D;&quot;sorts&quot;
            [limit]&#x3D;&quot;10&quot;
          &gt;
            &lt;ngx-datatable-column
              *ngIf&#x3D;&quot;editable&quot;
              [width]&#x3D;&quot;40&quot;
              [resizeable]&#x3D;&quot;false&quot;
              [draggable]&#x3D;&quot;false&quot;
              [canAutoResize]&#x3D;&quot;false&quot;
            &gt;
              &lt;ng-template let-row&#x3D;&quot;row&quot; ngx-datatable-cell-template&gt;
                &lt;button
                  mat-icon-button
                  class&#x3D;&quot;delete-button&quot;
                  matTooltip&#x3D;&quot;Click to delete&quot;
                  (click)&#x3D;&quot;beforeDelete(&#x27;map&#x27;, row)&quot;
                &gt;
                  &lt;mat-icon&gt;delete_forever&lt;/mat-icon&gt;
                &lt;/button&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-column
              name&#x3D;&quot;Name&quot;
              [width]&#x3D;&quot;80&quot;
              [cellClass]&#x3D;&quot;getNameCellClass&quot;
            &gt;&lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-column name&#x3D;&quot;Value&quot; [width]&#x3D;&quot;500&quot;&gt;
              &lt;ng-template
                let-row&#x3D;&quot;row&quot;
                let-value&#x3D;&quot;value&quot;
                ngx-datatable-cell-template
              &gt;
                &lt;hi-data-table
                  [rows]&#x3D;&quot;value&quot;
                  [sorts]&#x3D;&quot;sorts&quot;
                  [columns]&#x3D;&quot;columns.simpleConfigs&quot;
                  [deletable]&#x3D;&quot;editable&quot;
                  [insertable]&#x3D;&quot;editable&quot;
                  (update)&#x3D;&quot;edited(&#x27;map&#x27;, $event, row.name)&quot;
                  (create)&#x3D;&quot;created(&#x27;map&#x27;, $event, row.name)&quot;
                  (delete)&#x3D;&quot;edited(&#x27;map&#x27;, $event, row.name, true)&quot;
                &gt;
                &lt;/hi-data-table&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-column&gt;
            &lt;ngx-datatable-footer&gt;
              &lt;ng-template
                ngx-datatable-footer-template
                let-rowCount&#x3D;&quot;rowCount&quot;
                let-pageSize&#x3D;&quot;pageSize&quot;
                let-curPage&#x3D;&quot;curPage&quot;
              &gt;
                &lt;section
                  class&#x3D;&quot;footer&quot;
                  fxLayout&#x3D;&quot;row&quot;
                  fxLayoutAlign&#x3D;&quot;space-between center&quot;
                &gt;
                  &lt;button mat-button *ngIf&#x3D;&quot;editable&quot; (click)&#x3D;&quot;onCreate(&#x27;map&#x27;)&quot;&gt;
                    &lt;mat-icon&gt;add&lt;/mat-icon&gt;
                    Add new entry
                  &lt;/button&gt;
                  &lt;section&gt;{{ rowCount }} total&lt;/section&gt;
                  &lt;section&gt;
                    &lt;datatable-pager
                      [pagerLeftArrowIcon]&#x3D;&quot;&#x27;datatable-icon-left&#x27;&quot;
                      [pagerRightArrowIcon]&#x3D;&quot;&#x27;datatable-icon-right&#x27;&quot;
                      [pagerPreviousIcon]&#x3D;&quot;&#x27;datatable-icon-prev&#x27;&quot;
                      [pagerNextIcon]&#x3D;&quot;&#x27;datatable-icon-skip&#x27;&quot;
                      [page]&#x3D;&quot;curPage&quot;
                      [size]&#x3D;&quot;pageSize&quot;
                      [count]&#x3D;&quot;rowCount&quot;
                      [hidden]&#x3D;&quot;!(rowCount / pageSize &gt; 1)&quot;
                      (change)&#x3D;&quot;mapTable.onFooterPage($event)&quot;
                    &gt;
                    &lt;/datatable-pager&gt;
                  &lt;/section&gt;
                &lt;/section&gt;
              &lt;/ng-template&gt;
            &lt;/ngx-datatable-footer&gt;
          &lt;/ngx-datatable&gt;
        &lt;/mat-card-content&gt;
      &lt;/mat-card&gt;
    &lt;/section&gt;
  &lt;/section&gt;
&lt;/section&gt;
</code></pre>
    </div>

    <div class="tab-pane fade " id="c-styleData">
                <p class="comment">
                    <code>./node-viewer.component.scss</code>
                </p>
                <pre class="line-numbers"><code class="language-scss">@use &#x27;@angular/material&#x27; as mat;
@import &#x27;src/theme.scss&#x27;;

.node-viewer {
  padding: 10px;
}

.primary {
  color: mat.get-color-from-palette($hi-primary);
}

.search-form-field {
  width: 300px;
  padding: 10px 0 0 5px;
}

mat-card {
  margin-bottom: 10px;
}

ngx-datatable {
  word-break: break-all;
}

.footer {
  width: 100%;
  padding: 0 20px;
}

.delete-button {
  width: 24px;
  height: 24px;
  line-height: 24px;

  .mat-icon {
    @include md-icon-size(20px);

    &amp;:hover {
      color: mat.get-color-from-palette($hi-warn);
    }
  }
}
</code></pre>
    </div>

    <div class="tab-pane fade " id="c-tree">
        <div id="tree-container"></div>
        <div class="tree-legend">
            <div class="title">
                <b>Legend</b>
            </div>
            <div>
                <div class="color htmlelement"></div><span>Html element</span>
            </div>
            <div>
                <div class="color component"></div><span>Component</span>
            </div>
            <div>
                <div class="color directive"></div><span>Html element with directive</span>
            </div>
        </div>
    </div>

    
</div>

<script src="../js/libs/vis.min.js"></script>
<script src="../js/libs/htmlparser.js"></script>
<script src="../js/libs/deep-iterator.js"></script>
<script>
        var COMPONENT_TEMPLATE = '<div><!--  ~ Licensed to the Apache Software Foundation (ASF) under one  ~ or more contributor license agreements.  See the NOTICE file  ~ distributed with this work for additional information  ~ regarding copyright ownership.  The ASF licenses this file  ~ to you under the Apache License, Version 2.0 (the  ~ "License"); you may not use this file except in compliance  ~ with the License.  You may obtain a copy of the License at  ~  ~     http://www.apache.org/licenses/LICENSE-2.0  ~  ~ Unless required by applicable law or agreed to in writing,  ~ software distributed under the License is distributed on an  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY  ~ KIND, either express or implied.  See the License for the  ~ specific language governing permissions and limitations  ~ under the License.  --><section  class="node-viewer"  fxLayout="column"  fxLayoutAlign="center center"  fxLayoutGap="10px">  <mat-progress-bar    *ngIf="loadingIndicator"    mode="indeterminate"  ></mat-progress-bar>  <mat-button-toggle-group #group="matButtonToggleGroup" value="table">    <mat-button-toggle value="table"> Table View </mat-button-toggle>    <mat-button-toggle value="tree"> Tree View </mat-button-toggle>    <mat-button-toggle value="json"> JSON View </mat-button-toggle>  </mat-button-toggle-group>  <section class="viewer" [ngSwitch]="group.value" fxFlexFill>    <ngx-json-viewer *ngSwitchCase="\'tree\'" [json]="obj"></ngx-json-viewer>    <ace-editor      *ngSwitchCase="\'json\'"      [(text)]="objString"      mode="json"      theme="chrome"      [options]="{ useWorker: false }"      style="min-height: 300px"      #editor    >    </ace-editor>    <section *ngSwitchCase="\'table\'">      <!-- TODO vxu: use mat-simple-table when it\'s available -->      <section fxLayout="row" fxLayoutAlign="center center">        <span fxFlex="1 1 auto"></span>        <mat-icon>search</mat-icon>        <mat-form-field class="search-form-field">          <input            matInput            placeholder="Type to filter the fields..."            (keyup)="updateFilter($event)"          />        </mat-form-field>        <span fxFlex="1 1 auto"></span>        <!-- *ngIf="unlockable" -->        <button          mat-button          (click)="editable = !editable"          [matTooltip]="            editable              ? \'Click to prevent further changes\'              : \'Click to make changes\'          "        >          <mat-icon>{{ editable ? \'lock_open\' : \'lock\' }}</mat-icon>          {{ editable ? \'Unlocked\' : \'Locked\' }}        </button>      </section>      <mat-card>        <mat-card-header>          <mat-card-title>            Simple Fields            <span *ngIf="simpleConfigs.length == 0">is empty.</span>            <span *ngIf="keyword" class="primary">(filtered)</span>          </mat-card-title>        </mat-card-header>        <mat-card-content>          <hi-data-table            *ngIf="simpleConfigs.length || editable"            [rows]="simpleConfigs"            [sorts]="sorts"            [columns]="columns.simpleConfigs"            [deletable]="editable"            [insertable]="editable"            (update)="edited(\'simple\', $event)"            (create)="created(\'simple\', $event)"            (delete)="onDelete(\'simple\', $event.row)"          >          </hi-data-table>        </mat-card-content>      </mat-card>      <mat-card>        <mat-card-header>          <mat-card-title>            List Fields            <span *ngIf="listConfigs.length == 0">is empty.</span>            <span *ngIf="keyword" class="primary">(filtered)</span>          </mat-card-title>        </mat-card-header>        <mat-card-content>          <ngx-datatable            *ngIf="listConfigs.length || editable"            #listTable            class="material"            [headerHeight]="headerHeight"            rowHeight="auto"            [footerHeight]="headerHeight"            columnMode="force"            [rows]="listConfigs"            [sorts]="sorts"            [limit]="10"          >            <ngx-datatable-column              *ngIf="editable"              [width]="40"              [resizeable]="false"              [draggable]="false"              [canAutoResize]="false"            >              <ng-template let-row="row" ngx-datatable-cell-template>                <button                  mat-icon-button                  class="delete-button"                  matTooltip="Click to delete"                  (click)="beforeDelete(\'list\', row)"                >                  <mat-icon>delete_forever</mat-icon>                </button>              </ng-template>            </ngx-datatable-column>            <ngx-datatable-column              name="Name"              [width]="80"              [cellClass]="getNameCellClass"            ></ngx-datatable-column>            <ngx-datatable-column name="Value" [width]="400">              <ng-template                let-row="row"                let-value="value"                ngx-datatable-cell-template              >                <hi-data-table                  [rows]="value"                  [sorts]="sorts"                  [columns]="columns.listConfigs"                  [deletable]="editable"                  [insertable]="editable"                  (update)="edited(\'list\', $event, row.name)"                  (create)="created(\'list\', $event, row.name)"                  (delete)="edited(\'list\', $event, row.name, true)"                >                </hi-data-table>              </ng-template>            </ngx-datatable-column>            <ngx-datatable-footer>              <ng-template                ngx-datatable-footer-template                let-rowCount="rowCount"                let-pageSize="pageSize"                let-curPage="curPage"              >                <section                  class="footer"                  fxLayout="row"                  fxLayoutAlign="space-between center"                >                  <button                    mat-button                    *ngIf="editable"                    (click)="onCreate(\'list\')"                  >                    <mat-icon>add</mat-icon>                    Add new entry                  </button>                  <section>{{ rowCount }} total</section>                  <section>                    <datatable-pager                      [pagerLeftArrowIcon]="\'datatable-icon-left\'"                      [pagerRightArrowIcon]="\'datatable-icon-right\'"                      [pagerPreviousIcon]="\'datatable-icon-prev\'"                      [pagerNextIcon]="\'datatable-icon-skip\'"                      [page]="curPage"                      [size]="pageSize"                      [count]="rowCount"                      [hidden]="!(rowCount / pageSize > 1)"                      (change)="listTable.onFooterPage($event)"                    >                    </datatable-pager>                  </section>                </section>              </ng-template>            </ngx-datatable-footer>          </ngx-datatable>        </mat-card-content>      </mat-card>      <mat-card>        <mat-card-header>          <mat-card-title>            Map Fields            <span *ngIf="mapConfigs.length == 0">is empty.</span>            <span *ngIf="keyword" class="primary">(filtered)</span>          </mat-card-title>        </mat-card-header>        <mat-card-content>          <ngx-datatable            *ngIf="mapConfigs.length || editable"            #mapTable            class="material"            [headerHeight]="headerHeight"            rowHeight="auto"            [footerHeight]="headerHeight"            columnMode="force"            [rows]="mapConfigs"            [sorts]="sorts"            [limit]="10"          >            <ngx-datatable-column              *ngIf="editable"              [width]="40"              [resizeable]="false"              [draggable]="false"              [canAutoResize]="false"            >              <ng-template let-row="row" ngx-datatable-cell-template>                <button                  mat-icon-button                  class="delete-button"                  matTooltip="Click to delete"                  (click)="beforeDelete(\'map\', row)"                >                  <mat-icon>delete_forever</mat-icon>                </button>              </ng-template>            </ngx-datatable-column>            <ngx-datatable-column              name="Name"              [width]="80"              [cellClass]="getNameCellClass"            ></ngx-datatable-column>            <ngx-datatable-column name="Value" [width]="500">              <ng-template                let-row="row"                let-value="value"                ngx-datatable-cell-template              >                <hi-data-table                  [rows]="value"                  [sorts]="sorts"                  [columns]="columns.simpleConfigs"                  [deletable]="editable"                  [insertable]="editable"                  (update)="edited(\'map\', $event, row.name)"                  (create)="created(\'map\', $event, row.name)"                  (delete)="edited(\'map\', $event, row.name, true)"                >                </hi-data-table>              </ng-template>            </ngx-datatable-column>            <ngx-datatable-footer>              <ng-template                ngx-datatable-footer-template                let-rowCount="rowCount"                let-pageSize="pageSize"                let-curPage="curPage"              >                <section                  class="footer"                  fxLayout="row"                  fxLayoutAlign="space-between center"                >                  <button mat-button *ngIf="editable" (click)="onCreate(\'map\')">                    <mat-icon>add</mat-icon>                    Add new entry                  </button>                  <section>{{ rowCount }} total</section>                  <section>                    <datatable-pager                      [pagerLeftArrowIcon]="\'datatable-icon-left\'"                      [pagerRightArrowIcon]="\'datatable-icon-right\'"                      [pagerPreviousIcon]="\'datatable-icon-prev\'"                      [pagerNextIcon]="\'datatable-icon-skip\'"                      [page]="curPage"                      [size]="pageSize"                      [count]="rowCount"                      [hidden]="!(rowCount / pageSize > 1)"                      (change)="mapTable.onFooterPage($event)"                    >                    </datatable-pager>                  </section>                </section>              </ng-template>            </ngx-datatable-footer>          </ngx-datatable>        </mat-card-content>      </mat-card>    </section>  </section></section></div>'
    var COMPONENTS = [{'name': 'AlertDialogComponent', 'selector': 'hi-alert-dialog'},{'name': 'AppComponent', 'selector': 'hi-root'},{'name': 'ClusterComponent', 'selector': 'hi-cluster'},{'name': 'ClusterDetailComponent', 'selector': 'hi-cluster-detail'},{'name': 'ClusterListComponent', 'selector': 'hi-cluster-list'},{'name': 'ConfigDetailComponent', 'selector': 'hi-config-detail'},{'name': 'ConfirmDialogComponent', 'selector': 'hi-confirm-dialog'},{'name': 'ConfirmDialogTestComponent', 'selector': 'hi-confirm-dialog-test'},{'name': 'ControllerDetailComponent', 'selector': 'hi-controller-detail'},{'name': 'DashboardComponent', 'selector': 'hi-dashboard'},{'name': 'DataTableComponent', 'selector': 'hi-data-table'},{'name': 'DetailHeaderComponent', 'selector': 'hi-detail-header'},{'name': 'DisabledLabelComponent', 'selector': 'hi-disabled-label'},{'name': 'HelixListComponent', 'selector': 'hi-helix-list'},{'name': 'HistoryListComponent', 'selector': 'hi-history-list'},{'name': 'InputDialogComponent', 'selector': 'hi-input-dialog'},{'name': 'InputInlineComponent', 'selector': 'hi-input-inline'},{'name': 'InstanceDetailComponent', 'selector': 'hi-instance-detail'},{'name': 'InstanceListComponent', 'selector': 'hi-instance-list'},{'name': 'JobDetailComponent', 'selector': 'hi-job-detail'},{'name': 'JobListComponent', 'selector': 'hi-job-list'},{'name': 'JsonViewerComponent', 'selector': 'hi-json-viewer'},{'name': 'KeyValuePairsComponent', 'selector': 'hi-key-value-pairs'},{'name': 'NodeViewerComponent', 'selector': 'hi-node-viewer'},{'name': 'PartitionDetailComponent', 'selector': 'hi-partition-detail'},{'name': 'PartitionListComponent', 'selector': 'hi-partition-list'},{'name': 'ResourceDetailComponent', 'selector': 'hi-resource-detail'},{'name': 'ResourceDetailForInstanceComponent', 'selector': 'hi-resource-detail-for-instance'},{'name': 'ResourceListComponent', 'selector': 'hi-resource-list'},{'name': 'ResourceNodeViewerComponent', 'selector': 'hi-resource-node-viewer'},{'name': 'StateLabelComponent', 'selector': 'hi-state-label'},{'name': 'WorkflowDagComponent', 'selector': 'hi-workflow-dag'},{'name': 'WorkflowDetailComponent', 'selector': 'hi-workflow-detail'},{'name': 'WorkflowListComponent', 'selector': 'hi-workflow-list'}];
    var DIRECTIVES = [{'name': 'KeyValuePairDirective', 'selector': 'hi-key-value-pair'}];
    var ACTUAL_COMPONENT = {'name': 'NodeViewerComponent'};
</script>
<script src="../js/tree.js"></script>

















                   </div><div class="search-results">
    <div class="has-results">
        <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
        <ul class="search-results-list"></ul>
    </div>
    <div class="no-results">
        <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
    </div>
</div>
</div>
               <!-- END CONTENT -->
           </div>
       </div>

          <label class="dark-mode-switch">
               <input type="checkbox">
               <span class="slider">
                    <svg class="slider-icon" viewBox="0 0 24 24" fill="none" height="20" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" width="20" xmlns="http://www.w3.org/2000/svg">
                    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"></path>
                    </svg>
               </span>
          </label>

       <script>
            var COMPODOC_CURRENT_PAGE_DEPTH = 1;
            var COMPODOC_CURRENT_PAGE_CONTEXT = 'component';
            var COMPODOC_CURRENT_PAGE_URL = 'NodeViewerComponent.html';
            var MAX_SEARCH_RESULTS = 15;
       </script>

       <script src="../js/libs/custom-elements.min.js"></script>
       <script src="../js/libs/lit-html.js"></script>

       <script src="../js/menu-wc.js" defer></script>
       <script nomodule src="../js/menu-wc_es5.js" defer></script>

       <script src="../js/libs/bootstrap-native.js"></script>

       <script src="../js/libs/es6-shim.min.js"></script>
       <script src="../js/libs/EventDispatcher.js"></script>
       <script src="../js/libs/promise.min.js"></script>
       <script src="../js/libs/zepto.min.js"></script>

       <script src="../js/compodoc.js"></script>

       <script src="../js/tabs.js"></script>
       <script src="../js/menu.js"></script>
       <script src="../js/libs/clipboard.min.js"></script>
       <script src="../js/libs/prism.js"></script>
       <script src="../js/sourceCode.js"></script>
          <script src="../js/search/search.js"></script>
          <script src="../js/search/lunr.min.js"></script>
          <script src="../js/search/search-lunr.js"></script>
          <script src="../js/search/search_index.js"></script>
       <script src="../js/lazy-load-graphs.js"></script>


    </body>
</html>
